!==============================================================================
! Copyright (C) 2010, University Corporation for Atmospheric Research,
!                     Colorado State University,
!                     Los Alamos National Security, LLC,
!                     United States Department of Energy
!
! All rights reserved.  See ../COPYING for copyright details
!==============================================================================

!>
!! This module contains parameters for the global model domain size
!! decomposition block size.  It is used by the domain and block
!! modules for decomposing the model domain across processors.
!<
module domain_size
    use kinds_mod, only: i4

    implicit none
    private
    save

    ! !DEFINED PARAMETERS:

    integer (i4), parameter, public ::  &  ! model size parameters
      nx_global = 3600 ,&! extent of horizontal axis in i direction
      ny_global = 2400   ! extent of horizontal axis in j direction

    integer (i4), parameter, public :: &
      block_size_x = 24, &! size of block in first  horizontal dimension
      block_size_y = 16  ! size of block in second horizontal dimension

    !*** The model will inform the user of the correct
    !*** values for theparameters below.  A value higher than
    !*** necessary will not cause the code to fail, but will
    !*** allocate more memory than is necessary.  A value that
    !*** is too low will cause the code to exit.  
    !*** A good initial guess is found using
    !*** max=(nx_global/block_size_x)*(ny_global/block_size_y)/
    !***         num_procs

    integer (i4), parameter, public :: &
     max_blocks_tropic =  15   !   in each distribution

    integer (i4), parameter, public :: &
      max_blocks_land = (max_blocks_tropic/2) + 1

    !----------------------------------------------------
    ! The following is a list of the block size and
    ! core count combinations:  
    !
    !	     block_size
    !   nprocs   _x      _y   max_blocks
    !   --------------------------------
    !     60    180     120     6
    !     76    225     150     3
    !    228    225     150	    1
    !    358    180     120     1
    !    541    144      96     1
    !    764    120      80     1   
    !   1312     90      60     1
    !   2009     72      48     1
    !   2822     60      40     1
    !   4324     48      32     1 
    !   4884     45      30     1
    !   7545     36      24     1
    !  10705     30      20     1
    !  16528     24      16     1
    !  28972     18      12     1
    !  41352     15      10     1
    !  64074     12       8     1
    !----------------------------------------------------
end module domain_size
